This invention relates in general to video image processing and, more particularly, to video image processing in the personal computer environment.
It has become common in the computer display industry to refer to display data such as that generated by a standard graphics adapter (VGA, SVGA, etc.) as "graphics" and for television type display information to be referred to as "video". Graphics images tend to be relatively static with portions being updated at relatively slow rates, whereas video images can have every pixel thereof varying from frame to frame to give the illusion of a continuously varying image or motion picture if desired.
With the advent of multi-media computers, the display of video images on computer displays has become more commonplace. A video image is generally displayed within a window on a portion of the display screen. A situation is now discussed in which a window contains a moving video image (motion video) and the remainder of the screen displays a substantially non-moving image, namely a graphics image. The graphics image typically includes text characters, fixed graphics or another non-moving image.
In order for video to be displayed on computer displays, a display buffer or screen buffer is generally provided to match the moving video image to the display characteristics of the particular computer monitor. Video which is formatted specifically for computer displays typically has a frame rate of 15 to 30 Hz, while computer display systems typically have 60 or 70 Hz refresh rates. This results in the requirement to buffer the video so that the video may be transmitted to the display subsystem once, but may be displayed in more than one frame.
One approach to display buffering is to employ a dedicated memory into which the video image is read and which is then used to paint the video image on the display monitor at the appropriate display format and rates. Another approach to display buffering is to use the display memory of the graphics display system of the computer as a buffer in which to store the moving video image. This approach advantageously conserves memory and reduces the overall cost of memory.
Many graphical environments such as Microsoft Windows and graphical user interface operating systems such as OS/2 (OS/2 is a trademark of the IBM corporation) and Apple Computer's System 7 present information in a window on the display screen. it is also desirable that video images or motion video be displayed in such windows. To accomplish this task, it is often necessary that the data which represents the video image be scaled to fit the window.
Such scaling to make a video image fit a particular size window has typically been accomplished through a stretch block logic transfer (BLT) where pixel values may be interpolated or may be replicated or decimated to convert from the original image size to the desired window size.
Pixel replication or decimation is used for color lookup table display modes since the frame buffer does not contain the specific color of the pixels to be displayed. Pixel replication can result in reduced image quality due to shape distortion. For direct color modes, a weighted interpolation of the RGB components provides superior image quality, but the processing overhead associated with weighted interpolation can be so large that the CPU becomes bogged down, thus delaying other important CPU tasks and increasing the difficulty of real-time or synchronized processing.
Some video display systems scale video images external to the display subsystem controller, resulting in large amounts of data being transferred between the scaler and the display subsystem for enlarged images. Since the enlarged images are transferred at regular intervals for motion video, a large portion of the available memory bandwidth may be consumed by this transfer, thereby limiting the amount of time which may spent drawing graphics images, resulting in lower system performance. When the amount of video data exceeds the ability of the system's processing, the video image will degrade and possibly exhibit tearing and jerky motion.
An example of a graphics image and a video image on the same computer display is shown in FIG. 1. More specifically, FIG. 1 shows a computer screen 2 including a window 4 in which a graphics image such as a spreadsheet is displayed and further includes a window 6 in which a video image is displayed. The two images are overlapped as shown. A display clock is typically used to paint, scan line by scan line, the combined graphics/video image on the display screen.
Conventional graphics controllers used in personal computers often provide block logic transfer (BLT) capabilities. BLT operations are a basic part of many graphical user interfaces (GUIs). Thus, providing high performance BLT capabilities result in high performance graphics. Most BLT graphics controllers desirably operate independently of the CPU of the computer system. This approach of having the graphics controller operate independently from the computer's CPU has a significant positive impact on overall system performance. This is true because the CPU and graphics controller operate simultaneously (or coprocess) data. Moreover, the graphics controller is more closely coupled to display memory than the CPU such that operations controlled by the graphics controller are more efficient than those performed by the CPU. For example, the CPU must incur a bus cycle penalty to gain access to display memory whereas, in contrast, the graphics controller has direct access to display memory. Improved graphics controller performance results in improved overall computer system performance.
However, even with the enhanced graphics performance provided by BLT graphics controllers, image compression or expansion is desirable in certain applications. Unfortunately, implementation of image compression and expansion tends to negatively impact the performance of the computer's CPU when performed by the CPU.